/*
 * To change this template, choose Tools | Templates
 * and open the template in the editor.
 */

package entidades.controladores;

import entidades.Usuario;
import java.sql.Connection;
import java.sql.DriverManager;
import java.sql.PreparedStatement;
import java.sql.ResultSet;
import java.sql.SQLException;
import java.util.LinkedList;

/**
 *
 * @author alphyon
 */
public class UsuarioJDBC {

    PreparedStatement ps = null;
    Connection conn = null;
    ResultSet rs = null;


   public UsuarioJDBC() {
        cargarDriver();
        coneccion();
    }


    private void cargarDriver(){
       try{
           Class.forName("org.gjt.mm.mysql.Driver");
           System.out.println("Carga de driver Correcta......");
       }catch(Exception e){
           System.out.print("A ocurrido Un problema" +
                   "en la caraga del Driver"+e.getMessage());
       }
   }

   private void coneccion(){

       try {
            conn = DriverManager.getConnection("jdbc:mysql://localhost:3306/inventario_control", "chepe", "gundam");
            System.out.println("Conexion Satisfactoria...");
        } catch(SQLException e) {
            e.printStackTrace();
        }

   }


    public int crearUsuario(Usuario usuario) {
        int flag=0;

        try{
        String SQL="";
        SQL=SQL+"INSERT INTO usuario (id,Nuser,clave,nombre,apellidos,correo,id_unidad,id_nivel,estado)";
        SQL=SQL+" VALUES(?,?,?,?,?,?,?,?,?);";

        ps = conn.prepareStatement(SQL);

        ps.setInt(1, usuario.getId());
        ps.setString(2, usuario.getNuser());
        ps.setString(3, usuario.getClave());
        ps.setString(4, usuario.getNombre());
        ps.setString(5, usuario.getApellidos());
        ps.setString(6, usuario.getCorreo());
        ps.setString(7,usuario.getIdUnidad());
        ps.setString(8, usuario.getIdNivel());
        ps.setBoolean(9, usuario.getEstado());

        flag=ps.executeUpdate();

        }catch(Exception e){
           e.printStackTrace();
        }finally{
             try {
              if (ps != null) ps.close();
              if (conn != null) conn.close();
            } catch (SQLException e) {
                e.printStackTrace();
            }
        }

       return flag;
    }

    public int borrarRegistroUsuario(int id){
        int flag=0;
        String SQL = "DELETE FROM usuario WHERE id=?";


        try {
            ps = conn.prepareStatement(SQL);
            ps.setInt(1, id);
            flag=ps.executeUpdate();
        } catch (SQLException e) {
           e.printStackTrace();
        }

        return flag;
    }
    public int actualizarUsuario(Usuario usuario) {
        int flag=0;

        try{
        String SQL="";
        SQL=SQL+"UPDATE usuario  SET nombre=?,apellidos=?,correo=?,id_unidad=?,id_nivel=?,estado=? WHERE id=?";


        ps = conn.prepareStatement(SQL);


        ps.setString(1, usuario.getNombre());
        ps.setString(2, usuario.getApellidos());
        ps.setString(3, usuario.getCorreo());
        ps.setString(4,usuario.getIdUnidad());
        ps.setString(5, usuario.getIdNivel());
        ps.setBoolean(6, usuario.getEstado());
        ps.setInt(7, usuario.getId());

        flag=ps.executeUpdate();

        }catch(Exception e){
           e.printStackTrace();
        }finally{
             try {
              if (ps != null) ps.close();
              if (conn != null) conn.close();
            } catch (SQLException e) {
                e.printStackTrace();
            }
        }

       return flag;
    }
    public LinkedList<Usuario> getUsuarios(){
       LinkedList<Usuario> lista=new LinkedList<Usuario>();

       String SQL="SELECT * FROM usuario";
        try {
            ps = conn.prepareStatement(SQL);
            rs = ps.executeQuery();

            while(rs.next()){

                Usuario usuario = new Usuario();

                  usuario.setId(rs.getInt("id"));
                  usuario.setNuser(rs.getString("Nuser"));
                  usuario.setClave(rs.getString("clave"));
                  usuario.setNombre(rs.getString("nombre"));
                  usuario.setApellidos(rs.getString("apellidos"));
                  usuario.setCorreo(rs.getString("correo"));
                  usuario.setIdUnidad(rs.getString("id_unidad"));
                  usuario.setIdNivel(rs.getString("id_nivel"));
                  usuario.setEstado(rs.getBoolean("estado"));





                lista.add(usuario);

            }


        } catch (SQLException e) {
            e.printStackTrace();
        } finally{
             try {
              if (rs != null) rs.close();
              if (ps != null) ps.close();
              if (conn != null) conn.close();
            } catch (SQLException e) {
                e.printStackTrace();
            }
        }

        return lista;


   }

    public Usuario buscarUsuario(int id){
        Usuario usuario=null;
        String SQL="SELECT * FROM usuario WHERE id = ?";
        try {
            ps = conn.prepareStatement(SQL);
            ps.setInt(1, id);
            rs = ps.executeQuery();

            while(rs.next()){

                usuario = new Usuario();

                  usuario.setId(rs.getInt("id"));
                  usuario.setNuser(rs.getString("Nuser"));
                  usuario.setClave(rs.getString("clave"));
                  usuario.setNombre(rs.getString("nombre"));
                  usuario.setApellidos(rs.getString("apellidos"));
                  usuario.setCorreo(rs.getString("correo"));
                  usuario.setIdUnidad(rs.getString("id_unidad"));
                  usuario.setIdNivel(rs.getString("id_nivel"));
                  usuario.setEstado(rs.getBoolean("estado"));
                  break;
            }

            }catch(Exception e){
               e.printStackTrace();
            }finally{
            try {
               if (rs != null) rs.close();
               if (ps != null) ps.close();
               if (conn != null) conn.close();
            } catch (SQLException ex) {
            }
        }


        return usuario;
    }

    public Usuario buscarUsuario(String id){
        Usuario usuario=null;
        String SQL="SELECT * FROM usuario WHERE Nuser =?";
        try {
            ps = conn.prepareStatement(SQL);
            ps.setString(1, id);
            rs = ps.executeQuery();

            while(rs.next()){

                usuario = new Usuario();

                  usuario.setId(rs.getInt("id"));
                  usuario.setNuser(rs.getString("Nuser"));
                  usuario.setClave(rs.getString("clave"));                 
                  usuario.setIdNivel(rs.getString("id_nivel"));
                  break;
            }

            }catch(Exception e){
               e.printStackTrace();
            }finally{
            try {
               if (rs != null) rs.close();
               if (ps != null) ps.close();
               if (conn != null) conn.close();
            } catch (SQLException ex) {
            }
        }


        return usuario;
    }
     public static void  main(String[]args){
         Usuario un = new Usuario();
         UsuarioJDBC juni = new UsuarioJDBC();
         un=juni.buscarUsuario("Alphyon");
         System.out.print(un.getClave());
         System.out.print(un.getNuser());

         
   }


}
